<template>
  <div>
    <!--
      on-success: 是组件封装好的一个属性，这个属性的值是一个函数
                  并这个函数能够接收到一个参数，这个参数的值就是导入的
                  表格数据
     -->
    <UploadExcel :on-success="success" />
  </div>
</template>
<script>
import { importEmployee } from '@/api/employees'
export default {
  methods: {
    async success(data) {
      console.log('导入的表格中的数据', data)
      // 把数据转换为接口需要的数据格式化
      const newArr = data.results.map((item) => {
        return this.zhToEn(item)
      })
      console.log(20, '转换后的数据', newArr)
      // 调用接口 实现批量导入
      await importEmployee(newArr)
      // 导入成功返回员工列表
      // back：表示返回上一个路由页面
      this.$router.back()
    },
    // 处理对象，把对象中的属性名改为英文属性名
    zhToEn(item) {
      const obj = {}
      // 处理过程
      /**
       * 中英文对照表（字典表）
       * 作用：用代码的方法来表示中文属性名对应的英文属性名是什么
       * */
      const userRelations = {
        入职日期: 'timeOfEntry',
        姓名: 'username',
        工号: 'workNumber',
        手机号: 'mobile',
        转正日期: 'correctionTime'
      }
      for (const key in item) {
        // console.log(38, key)
        // key: item对象中的中文属性名
        // 现在我们可以结合key和userRelations来获取到英文属性名
        // enKey: key值对应的英文名
        // item[key]：key属性对应的值
        const enKey = userRelations[key]
        if (enKey === 'timeOfEntry' || enKey === 'correctionTime') {
          obj[enKey] = this.formatExcelDate(item[key])
        } else {
          obj[enKey] = item[key]
        }
        // obj[enKey] = item[key]
      }
      return obj
    },
    /**
     * 格式化Excel表中存储的年月日日期
     * @param {number} num - excel存储的数字
     * @param {string} [format = '-'] - 年月日的间隔符，默认为'-'
     * @returns {string} 格式化后的日期
     */
    formatExcelDate(num, format = '-') {
      if (!/^\d+$/.test(num)) return
      num = parseInt(num)
      let millisecond = 0 // 转化后的毫秒数
      if (num > 60) {
        // 对大于60的日期进行减1处理
        millisecond = (num - 25568 - 1) * 3600 * 24 * 1000
      } else {
        millisecond = (num - 25568) * 3600 * 24 * 1000
      }
      const date = new Date(millisecond) // 根据转化后的毫秒数获取对应的时间
      const yy = date.getFullYear()
      const m = date.getMonth() + 1
      const mm = m >= 10 ? m : '0' + m
      const d = date.getDate()
      const dd = d >= 10 ? d : '0' + d
      return yy + format + mm + format + dd // 返回格式化后的日期
    }
  }
}
</script>
<style scoped>
</style>
